#ifndef USER_VARIABLE_MANAGER_H
#define USER_VARIABLE_MANAGER_H

#include "manager.h"
#include "M_Code_exception.h"

class UserVariableManager : public Mgr<UserVariableManager> {
    friend class Manager;
    friend class Mgr<UserVariableManager>;
    friend class MacrosManager;
    ConfigManager * m_CfgMan;
    wxString m_ActiveSet;
    wxArrayString m_Preempted;
  public:
    UserVariableManager();
    wxString Replace( const wxString& variable );
    wxString GetVariable( wxWindow *parent, const wxString &old );
    void Preempt( const wxString& variable );
    void Arrogate();
    bool Exists( const wxString& variable ) const;
    void Configure();
    void Migrate();
    UserVariableManager& operator=( M_Code_unused const UserVariableManager& rhs ) {
      m_Throw( _T( "Can't assign a UserVariableManager* !!!" ) );
      return *this;
    }
  private:
    UserVariableManager( M_Code_unused const UserVariableManager& rhs );
};

#endif
